home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / tcqb.arc / TCQB.C < prev    next >
Text File  |  1988-02-29  |  2KB  |  143 lines

  1. #pragma inline
  2.  
  3. #define    DLE        16
  4. #define    ENQ        5
  5. #define ESC        27
  6.  
  7. void _setenvp(void){}        /* dummy out _setenvp */
  8.  
  9. int _stklen = 0x200;
  10.  
  11.  
  12. exit(int n)
  13. {
  14.     _exit(n);
  15. }
  16.  
  17. int user_abort()
  18. {
  19.     if(chkkbd())
  20.     {
  21.         if(fgetkey()==ESC)
  22.             return 1;
  23.     }
  24.     return 0;
  25. }
  26.  
  27. stoi(s)
  28. register char *s;
  29. {
  30. register unsigned int j;
  31.  
  32.     j=0;
  33.     while(*s>='0' && *s<='9')    /* loop through and convert */
  34.         j=j*10+(*s++-'0');
  35.     return j;
  36. }
  37.  
  38. cls()
  39. {
  40.     putchar(ESC);
  41.     putchar('[');
  42.     putchar('2');
  43.     putchar('J');
  44. }
  45.  
  46. unsigned int mono;
  47. unsigned int scrseg;
  48.  
  49. main(argc,argv)
  50. int argc;
  51. char **argv;
  52. {
  53.     unsigned int baud,port;
  54.     unsigned int duplex;
  55.     int ch;
  56.  
  57. /* disable break key */
  58.     asm mov ah,33h
  59.     asm mov al,1
  60.     asm mov dl,0
  61.     asm int 21h
  62.  
  63.     sput("TCQB version 1.1e, 2/29/88:  Copyright 1988, John Bridges (CIS:73307,606)\r\n");
  64.     duplex=0;
  65.     baud=0;
  66.     port=1;
  67.     if(argc>1)
  68.     {
  69.         ch=*argv[1];
  70.         if(ch>='a' && ch<='z')
  71.             ch-=32;
  72.         if(ch=='F')
  73.             duplex=0;
  74.         else
  75.         if(ch=='H')
  76.             duplex=1;
  77.         else
  78.             bad();
  79.     }
  80.     if(argc>2)
  81.     {
  82.         port=stoi(argv[2]);
  83.         if(port<1 || port>2)
  84.             bad();
  85.     }
  86.     if(argc>3)
  87.         baud=stoi(argv[3]);
  88.     cominit(baud,port);
  89.     for(;;)
  90.     {
  91.         while(chkkbd())
  92.         {
  93.             ch=fgetkey();
  94.             switch(ch)
  95.             {
  96.                 case ESC:
  97.                 case 45|256: /* Alt-X */
  98.                     goto quit;
  99.                 case 18|256: /* Alt-E */
  100.                     duplex=!duplex;
  101.                     break;
  102.                 case 46|256: /* Alt-C */
  103.                     cls();
  104.                     break;
  105.                 default:
  106.                     if(ch<256)
  107.                     {
  108.                         if(duplex)
  109.                             putchar(ch);
  110.                         cputc(ch);
  111.                     }
  112.             }
  113.         }
  114.         if((ch=getcom())!=-1)
  115.         {
  116.             switch(ch&=0x7f)
  117.             {
  118.                 case DLE:
  119.                     bp_DLE();
  120.                     break;
  121.                 case ENQ:
  122.                     bp_ENQ();
  123.                     break;
  124.                 case 'L'-64:    /* Form Feed */
  125.                     cls();
  126.                     break;
  127.                 default:
  128.                     putchar(ch);
  129.             }
  130.         }
  131.     }
  132. quit:    comrest();
  133.     sput("\r\n");
  134. }
  135.  
  136.  
  137. bad()
  138. {
  139.     sput("\r\n usage:  TCQB [[[HALF|FULL] PORTNUMBER] BAUDRATE]\r\n");
  140.     exit(1);
  141. }
  142.  
  143.